package cn.harry.modular.ai.service;

import cn.harry.common.api.R;
import cn.harry.modular.ai.domain.ChatMessage;
import cn.harry.modular.ai.vo.message.AiChatMessageSendReqVO;
import cn.harry.modular.ai.vo.message.AiChatMessageSendRespVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.validation.Valid;
import reactor.core.publisher.Flux;

import java.util.List;

/**
 * AI 聊天消息服务类
 *
 * @author harry
 * @公众号 Harry技术
 */
public interface ChatMessageService extends IService<ChatMessage> {

    /**
     * 发送消息
     * @param sendReqVO 发送信息
     * @param userId 用户编号
     * @return 发送结果
     */
    AiChatMessageSendRespVO sendMessage(@Valid AiChatMessageSendReqVO sendReqVO, Long userId);

    /**
     *  发送消息（流式）
     * @param sendReqVO 发送信息
     * @param userId 用户编号
     * @return 发送结果
     */
    Flux<R<AiChatMessageSendRespVO>> sendChatMessageStream(@Valid AiChatMessageSendReqVO sendReqVO, Long userId);

    /**
     * 获得指定对话的消息列表
     *
     * @param conversationId 对话编号
     * @return 消息列表
     */
    List<ChatMessage> getChatMessageListByConversationId(Long conversationId);
}
